package xyz.erupt.flow.bean.entity.form;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @author PP
 * @version 1.0
 * @project Erupt
 * @description 自定义类型处理
 * @date 2024/9/20 09:33:07
 */
public class PlaceholderDeserializer extends JsonDeserializer<Object> {

    @Override
    public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        JsonNode node = p.getCodec().readTree(p);

        // 如果是数组，解析为List
        if (node.isArray()) {
            List<String> list = new ArrayList<>();
            for (JsonNode element : node) {
                list.add(element.asText());
            }
            return list;
        }

        // 如果是字符串，返回单个字符串作为列表中的一项
        if (node.isTextual()) {
            List<String> list = new ArrayList<>();
            list.add(node.asText());
            return list;
        }

        return null;  // 如果不是数组或字符串，则返回null
    }
}
